/*
 * Copyright 2006-2008 Sun Microsystems, Inc. All Rights Reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
 * 
 * This code is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2
 * only, as published by the Free Software Foundation.
 * 
 * This code is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * General Public License version 2 for more details (a copy is
 * included in the LICENSE file that accompanied this code).
 * 
 * You should have received a copy of the GNU General Public License
 * version 2 along with this work; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 * 02110-1301 USA
 * 
 * Please contact Sun Microsystems, Inc., 16 Network Circle, Menlo
 * Park, CA 94025 or visit www.sun.com if you need additional
 * information or have any questions.
 */

package com.sun.spot.peripheral;

public class SpiPcs {
	private int pcsIndex;
	private int config;
	
	/**
	 * Create a SpiPcs for accessing the device whose chip select and SPI modes are as specified. See {@link ISpiMaster} for
     * details of SPI configuration settings.
	 * @param pcs The chip select of the device
	 * @param spiConfiguration Value to be written into SPI_CSR for transfers to this device
	 */
	public SpiPcs(PeripheralChipSelect pcs, int spiConfiguration) {
		this.pcsIndex = pcs.getPcsIndex();
		validate(spiConfiguration);
		this.config = spiConfiguration;
	}

	public int getPcsIndex() {
		return pcsIndex;
	}
	
	public int getConfiguration() {
		return config;
	}

	public void setConfiguration(int config) {
		validate(config);
		this.config = config;
	}
	
	private void validate(int spiConfiguration) {
		if ((spiConfiguration & ISpiMaster.CSR_SCBR) == 0) {
			throw new IllegalArgumentException("The SPI_CSR setting 0x" + Integer.toHexString(spiConfiguration) + " does not define a value for CSR_SCBR");
		}
	}
}
